package com.alibaba.citrus.ots.unified.inventory.api;

import com.alibaba.citrus.ots.unified.inventory.dto.api.request.*;
import com.alibaba.citrus.ots.unified.inventory.dto.api.response.*;
import com.alibaba.cz.base.tool.result.Result;
import com.alibaba.lattice2.epoch.meshflow.model.annotation.MeshFlowService;

import java.util.List;

/**
 * @description: 调拨单读服务
 * @author: yuhw
 * @date: 2021年08月25日 21:02
 **/
@MeshFlowService(apps = {"bc_ots"}, name = "YHWXX")
public interface AllocateOrderReadService {
//    /**
//     * 调拨单分页查询
//     * @param allocateOrderSearchRequest
//     * @return
//     */
//    Result<AllocateOrderSearchResponse> search(AllocateOrderSearchRequest allocateOrderSearchRequest);


    /**
     * 调拨单明细分页查询
     * @param allocateOrderDetailSearchRequest
     * @return
     */
    Result<AllocateOrderDetailResponse>  search(AllocateOrderDetailSearchRequest allocateOrderDetailSearchRequest);


    /**
     * 查询调拨单详情
     * @param allocateOrderDetailsQueryRequest
     * @return
     */
    Result<AllocateOrderDetailsQueryResponse> query(AllocateOrderDetailsQueryRequest allocateOrderDetailsQueryRequest);

    /**
     * 根据预调拨单号查询调拨单 和明细
     * @param request
     * @return
     */
    Result<AllocateOrderQueryResponse> queryByAllocateApplyOrderCode(AllocateApplyOrderCodeQueryRequest request);


    /**
     * 创建平台->sap 的调拨单下发接口 类型90
     * @param request
     * @return
     */
    Result<AllocateOrderSubmitSAPResponse>  createSubmitSAPRequest(AllocateOrderSubmitSAPRequest request);


    /**
     * 根据收货仓id 获取客户信息
     * @param request
     * @return
     */
    Result<AllocateOrderGetCustomerResponse> getCustomer(AllocateOrderGetCustomerRequest request);




    Result<List<AllocateOrderBatchGetWarehouseResponse>> getWarehouse(AllocateOrderGetWarehouseRequest request);


//    Result<AllocateOrderSalesOrderUpdateResponse> salesOrderUpdate(AllocateOrderSalesOrderUpdateRequest request);

    /**
     * 货运方式
     * @return
     */
//    List<ShipMethodResponse> shipMethod();
    ShipMethodResponse shipMethod();

//    Result<PageResult<List<ShipMethodResponse>>> shipMethod();
//    /**
//     * 查询单个调拨单
//     * @param allocateOrderQueryRequest
//     * @return
//     */
//    Result<AllocateOrderResponse> query(AllocateOrderQueryRequest allocateOrderQueryRequest);
//
//    /**
//     *  查询调拨单 可能返回多个合集
//     * @param allocateOrderBatchQueryRequest
//     * @return
//     */
//    Result<AllocateOrderBatchResponse> batchQuery(AllocateOrderBatchQueryRequest allocateOrderBatchQueryRequest);

//    Result<> queryById()


}
